feat(swift-ios): embed an exact build changelog with links - #5969
Conversation
|
Important Review skippedAuto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using high effort and found 2 potential issues.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit cb69786. Configure here.
ApprovabilityVerdict: Needs human review This PR introduces a new feature with new user-facing UI (build changelog view in Settings), new data models, new build scripts, and workflow changes. While well-structured and tested, new features with this scope warrant human review. You can customize Macroscope's approvability policy. Learn more. |
|
Final dependency-safe changelog is preserved at Unique behavior reuses #5790 formatting; accepts notes only when embedded version/build match the installed app; shows explicit Unavailable otherwise; sanitizes credentials/jargon; bounds metadata; keeps Release free of local Git history; and composes generation after the cleanup trap while preserving monotonic validation/debug metadata/build order. Verification: changelog/install composition + monotonic + debug shell suites pass; focused Settings 6/6; Debug run; Release build with empty changelog; full native 103 XCTest + 236 Swift Testing, one expected skip, zero failures; Conflict classification: feature complementary, code/history conflicting because old #5969 duplicates version rows/formatter and overlaps Info.plist/install ownership. Landing order: #5790 → #5970 → #5972 → unique #5789 |
1e1f4a9 to
f499549
Compare
|
Exact final-head simulator proof (f499549): the embedded changelog presents the latest change, earlier entries, build revision, and bounded timeline at phone width. Focused settings tests passed (3/3); the generated fixture contained 7 entries, omitted 0, and stayed at 1088 bytes. The current native-CI red is the base-branch provider-catalog fixture failure fixed separately in #6130. |



Summary
Embeds a bounded offline changelog for Debug device installs and shows exact commits in Settings with commit and detected PR links. Generation is compact, portable across remotes, best-effort without Git history, and independent of the older version-settings PR.
Verification
Scope
Targets the active native SwiftUI owner branch (#5178).
Note
Embed a git-based build changelog in the iOS app's Settings screen
T3_BUILD_CHANGELOGbuild setting for Debug device builds.BuildChangelogmodel decodes the base64 JSON fromInfo.plistat runtime, exposing short commit hashes and deduplicated entry summaries.BuildChangelogViewrenders the latest change, earlier changes in a timeline, and commit/PR links; empty states are shown when no changelog is embedded or no diffs exist between revisions.Macroscope summarized 1e1f4a9. (Automatic summaries will resume when PR exits draft mode or review begins).
Note
Low Risk
Settings-only UI plus optional Debug build metadata; no auth, networking, or release-path behavior changes.
Overview
Adds an offline build changelog for native SwiftUI Debug device installs: commits since a configurable base ref are embedded at build time and surfaced in Settings → About.
Build pipeline:
generate-build-changelog.swiftwalksgit logbetweenT3_SWIFT_CHANGELOG_BASE_REF(defaultupstream/t3code/rebuild-mobile-app-swift) andHEAD, parses PR numbers from titles, caps payload size (~48 KiB), and writes JSON.install-device.shruns this only for Debug, base64-encodes the result intoT3_BUILD_CHANGELOG, and passes it throughInfo.plistasT3BuildChangelog.In-app:
BuildChangelogdecodes the embedded payload; Build changelog in About shows version/build viaSettingsAboutMetadata, highlights the latest commit, lists earlier changes on a timeline, and links to commits/PRs when a repo URL is available. Empty or missing changelog states are handled explicitly.Tests cover version labeling, changelog decode, and summary deduplication; README documents
T3_SWIFT_CHANGELOG_BASE_REF.Reviewed by Cursor Bugbot for commit 1e1f4a9. Bugbot is set up for automated code reviews on this repo. Configure here.